@#  VW"dvds.dbf id&dvdprice.dbf id, genreidgenresgenreid)genres.dbfgenreid  id dvds id ߍ%e-Uj%CdvdsMCCC-Enter password (type the word "Admin" below): DVD LoginfADMIN xB-U CTABLENAME  M(`4.Database opened by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOG  M(`4.Database closed by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOGa%CgenresZ0C$Sorry, you cannot modify this table.xB-U CTABLENAMEdbc_BeforeOpenTable, dbc_OpenData dbc_CloseDatadbc_BeforeModifyTableS8qqA41AAa41AAa4qqA1'=L %)#DEFINE DVDLOGIN_LOC [Enter password (type the word "Admin" below):] #DEFINE DVDLOGINCAP_LOC [DVD Login] #DEFINE DATAOPEN_LOC Database opened by #DEFINE DATACLOSED_LOC Database closed by #DEFINE NOMOD_LOC "Sorry, you cannot modify this table." PROCEDURE dbc_BeforeOpenTable(cTableName) *Just before a table or view is opened. Return .F. to prevent table or view being opened. IF ATC("dvds",cTableName)#0 AND UPPER(ALLTRIM(INPUTBOX(DVDLOGIN_LOC,DVDLOGINCAP_LOC)))#"ADMIN" RETURN .F. ENDIF ENDPROC PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATAOPEN_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_CloseData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATACLOSED_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_BeforeModifyTable(cTableName) *Just before a table is modified. Return .F. to prevent modification. IF ATC("genres",cTableName)#0 MESSAGEBOX(NOMOD_LOC) RETURN .F. ENDIF ENDPROC #DEFINE DVDLOGIN_LOC [Enter password (type the word "Admin" below):] #DEFINE DVDLOGINCAP_LOC [DVD Login] #DEFINE DATAOPEN_LOC Database opened by #DEFINE DATACLOSED_LOC Database closed by #DEFINE NOMOD_LOC "Sorry, you cannot modify this table." PROCEDURE dbc_BeforeOpenTable(cTableName) *Just before a table or view is opened. Return .F. to prevent table or view being opened. IF ATC("dvds",cTableName)#0 AND UPPER(ALLTRIM(INPUTBOX(DVDLOGIN_LOC,DVDLOGINCAP_LOC)))#"ADMIN" RETURN .F. ENDIF ENDPROC PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATAOPEN_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_CloseData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATACLOSED_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_BeforeModifyTable(cTableName) *Just before a table is modified. Return .F. to prevent modification. IF ATC("genres",cTableName)#0 MESSAGEBOX(NOMOD_LOC) RETURN .F. ENDIF ENDPROC  ,%u9Uj%CdvdsMCCC-Enter password (type the word "Admin" below): DVD LoginfADMIN xB-U CTABLENAME  M(`4.Database opened by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOG  M(`4.Database closed by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOGa%CgenresZ0C$Sorry, you cannot modify this table.xB-U CTABLENAMEdbc_BeforeOpenTable, dbc_OpenData dbc_CloseDatadbc_BeforeModifyTable_8qqA41AaAa41AaAa4qqA1)AP ')#DEFINE DVDLOGIN_LOC [Enter password (type the word "Admin" below):] #DEFINE DVDLOGINCAP_LOC [DVD Login] #DEFINE DATAOPEN_LOC Database opened by #DEFINE DATACLOSED_LOC Database closed by #DEFINE NOMOD_LOC "Sorry, you cannot modify this table." PROCEDURE dbc_BeforeOpenTable(cTableName) *Just before a table or view is opened. Return .F. to prevent table or view being opened. IF ATC("dvds",cTableName)#0 AND UPPER(ALLTRIM(INPUTBOX(DVDLOGIN_LOC,DVDLOGINCAP_LOC)))#"ADMIN" * Since this is a sample, we will ignore password, however, you can enforce it by returning .F. * RETURN .F. RETURN .T. ENDIF ENDPROC PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATAOPEN_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_CloseData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATACLOSED_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_BeforeModifyTable(cTableName) * Just before a table is modified. Return .F. to prevent modification. IF ATC("genres",cTableName)#0 MESSAGEBOX(NOMOD_LOC) RETURN .F. ENDIF ENDPROC  ,%u9Uj%CdvdsMCCC-Enter password (type the word "Admin" below): DVD LoginfADMIN xBaU CTABLENAME  M(`4.Database opened by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOG  M(`4.Database closed by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOGa%CgenresZ0C$Sorry, you cannot modify this table.xB-U CTABLENAMEdbc_BeforeOpenTable, dbc_OpenData dbc_CloseDatadbc_BeforeModifyTable_8qsA41AaAa41AaAa4qqA1gv))l#DEFINE DVDLOGIN_LOC [Enter password:] #DEFINE DVDLOGINCAP_LOC [DVD Login] #DEFINE DATAOPEN_LOC Database opened by #DEFINE DATACLOSED_LOC Database closed by #DEFINE NOMOD_LOC "Sorry, you cannot modify this table." PROCEDURE dbc_BeforeOpenTable(cTableName) *Just before a table or view is opened. Return .F. to prevent table or view being opened. IF ATC("dvds",cTableName)#0 AND UPPER(ALLTRIM(INPUTBOX(DVDLOGIN_LOC,DVDLOGINCAP_LOC)))#"ADMIN" * Since this is a sample, we will ignore password, however, you can enforce it by returning .F. * RETURN .F. RETURN .T. ENDIF ENDPROC PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATAOPEN_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_CloseData(cDatabaseName, lExclusive, lNoupdate, lValidate) *Immediately after DBC is opened. LOCAL lcStr,lcLog TEXT TO lcStr NOSHOW TEXTMERGE DATACLOSED_LOC <> <>. ENDTEXT lcLog = FORCEEXT(cDatabaseName,"LOG") STRTOFILE(lcStr,lcLog,.T.) ENDPROC PROCEDURE dbc_BeforeModifyTable(cTableName) * Just before a table is modified. Return .F. to prevent modification. IF ATC("genres",cTableName)#0 MESSAGEBOX(NOMOD_LOC) RETURN .F. ENDIF ENDPROC  x%WUaL%Cdvds/CCCEnter password: DVD LoginfADMIN ZBaU CTABLENAME  M(`4.Database opened by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOG  M(`4.Database closed by <> <>.TCLOGCaU CDATABASENAME LEXCLUSIVE LNOUPDATE LVALIDATELCSTRLCLOGa%CgenresZ0C$Sorry, you cannot modify this table.xB-U CTABLENAMEdbc_BeforeOpenTable, dbc_OpenData dbc_CloseDataodbc_BeforeModifyTableA8qsA41AaAa41AaAa4qqA1IXm|a))